/*
    Copyright 1996-2008 Ariba, Inc.

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at
        http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.

    $Id:$
*/

package ariba.ideplugin.idea.lang.grammer;

import com.intellij.lexer.FlexLexer;
import com.intellij.psi.tree.IElementType;
import static ariba.ideplugin.idea.lang.grammer.psi.OSSTypes.*;

@SuppressWarnings({"ALL"})


/**
 * This class is a scanner generated by 
 * <a href="http://www.jflex.de/">JFlex</a> 1.4.3
 * on 12/2/13 11:20 PM from the specification file
 * <tt>/ariba/opensourceui/ariba/platform/ui/ideplugin12/ariba/ideplugin/idea/lang
 * /grammer/OSSLexer.flex</tt>
 */
public class _OSSLexer implements FlexLexer
{
    /**
     * initial size of the lookahead buffer
     */
    private static final int ZZ_BUFFERSIZE = 16384;

    /**
     * lexical states
     */
    public static final int YYINITIAL = 0;

    /**
     * ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l
     * ZZ_LEXSTATE[l+1] is the state in the DFA for the lexical state l
     * at the beginning of a line
     * l is of the form l = 2*k, k a non negative integer
     */
    private static final int ZZ_LEXSTATE[] = {
            0, 0
    };

    /**
     * Translates characters to character classes
     */
    private static final String ZZ_CMAP_PACKED =
            "\11\0\1\1\1\2\1\0\1\1\1\1\22\0\1\1\1\42\1\12" +
                    "\1\35\1\7\2\0\1\13\1\36\1\37\1\4\1\27\1\21\1\27" +
                    "\1\14\1\3\1\17\7\20\2\6\1\32\1\31\1\0\1\33\1\40" +
                    "\1\0\1\34\1\23\1\73\1\101\1\30\1\26\1\104\1\103\1\24" +
                    "\1\110\1\5\1\53\1\75\1\5\1\72\1\56\1\76\1\5\1\71" +
                    "\1\106\1\107\2\5\1\102\1\22\2\5\1\15\1\0\1\16\1\0" +
                    "\1\77\1\0\1\45\1\63\1\43\1\47\1\25\1\62\1\64\1\55" +
                    "\1\50\1\66\1\5\1\44\1\65\1\61\1\60\1\51\1\5\1\54" +
                    "\1\46\1\57\1\70\1\67\1\100\1\105\1\52\1\74\1\10\1\0" +
                    "\1\11\1\41\uff81\0";

    /**
     * Translates characters to character classes
     */
    private static final char[] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED);

    /**
     * Translates DFA states to action switch labels.
     */
    private static final int[] ZZ_ACTION = zzUnpackAction();

    private static final String ZZ_ACTION_PACKED_0 =
            "\1\0\1\1\1\2\1\1\1\3\1\4\1\5\1\1" +
                    "\1\6\1\7\2\1\1\10\1\11\1\12\1\5\1\13" +
                    "\1\14\1\15\1\16\1\17\1\20\1\21\1\22\1\23" +
                    "\1\24\21\4\1\25\1\26\1\27\1\30\2\5\1\0" +
                    "\1\30\1\31\4\0\1\32\1\0\1\33\1\30\1\0" +
                    "\2\5\1\0\1\34\32\4\1\26\1\30\1\0\1\35" +
                    "\1\36\1\0\1\30\1\5\33\4\1\26\1\0\33\4" +
                    "\1\0\1\37\2\4\1\40\1\4\1\41\7\4\1\42" +
                    "\3\4\1\43\7\4\1\44\1\45\2\4\1\46\1\47" +
                    "\10\4\1\50\1\4\1\51\1\4\1\52\3\4\1\53" +
                    "\17\4\1\54\7\4\1\55\2\4\1\56\3\4\1\57" +
                    "\5\4\1\60\7\4\1\61\1\62\7\4\1\63\26\4" +
                    "\1\64\1\65\2\4\1\66\1\4\1\67\2\4\1\70" +
                    "\7\4\1\71\4\4\1\72\1\4\1\73\1\74\2\4" +
                    "\1\75\2\4\1\76";

    private static int[] zzUnpackAction ()
    {
        int[] result = new int[312];
        int offset = 0;
        offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
        return result;
    }

    private static int zzUnpackAction (String packed, int offset, int[] result)
    {
        int i = 0;       /* index in packed string  */
        int j = offset;  /* index in unpacked array */
        int l = packed.length();
        while (i < l) {
            int count = packed.charAt(i++);
            int value = packed.charAt(i++);
            do result[j++] = value; while (--count > 0);
        }
        return j;
    }


    /**
     * Translates a state to a row index in the transition table
     */
    private static final int[] ZZ_ROWMAP = zzUnpackRowMap();

    private static final String ZZ_ROWMAP_PACKED_0 =
            "\0\0\0\111\0\222\0\333\0\111\0\u0124\0\u016d\0\u01b6" +
                    "\0\111\0\111\0\u01ff\0\u0248\0\u0291\0\111\0\111\0\u02da" +
                    "\0\111\0\111\0\111\0\u0323\0\111\0\111\0\111\0\111" +
                    "\0\111\0\111\0\u036c\0\u03b5\0\u03fe\0\u0447\0\u0490\0\u04d9" +
                    "\0\u0522\0\u056b\0\u05b4\0\u05fd\0\u0646\0\u068f\0\u06d8\0\u0721" +
                    "\0\u076a\0\u07b3\0\u07fc\0\u0845\0\u088e\0\u08d7\0\u0920\0\u0969" +
                    "\0\111\0\u0969\0\111\0\u09b2\0\u09fb\0\u0a44\0\u0a8d\0\u01ff" +
                    "\0\111\0\u0248\0\111\0\u0ad6\0\u0b1f\0\u0b68\0\u0bb1\0\u0bfa" +
                    "\0\111\0\u0c43\0\u0c8c\0\u0cd5\0\u0d1e\0\u0d67\0\u0db0\0\u0df9" +
                    "\0\u0e42\0\u0e8b\0\u0ed4\0\u0f1d\0\u0f66\0\u0faf\0\u0ff8\0\u1041" +
                    "\0\u108a\0\u10d3\0\u111c\0\u1165\0\u11ae\0\u11f7\0\u1240\0\u1289" +
                    "\0\u12d2\0\u131b\0\u1364\0\u13ad\0\u13f6\0\u143f\0\111\0\111" +
                    "\0\u1488\0\u0969\0\u14d1\0\u151a\0\u1563\0\u15ac\0\u15f5\0\u163e" +
                    "\0\u1687\0\u16d0\0\u1719\0\u1762\0\u17ab\0\u17f4\0\u183d\0\u1886" +
                    "\0\u18cf\0\u1918\0\u1961\0\u19aa\0\u19f3\0\u1a3c\0\u1a85\0\u1ace" +
                    "\0\u1b17\0\u1b60\0\u1ba9\0\u1bf2\0\u1c3b\0\u1c84\0\111\0\u1ccd" +
                    "\0\u1d16\0\u1d5f\0\u1da8\0\u1df1\0\u1e3a\0\u1e83\0\u1ecc\0\u1f15" +
                    "\0\u1f5e\0\u1fa7\0\u1ff0\0\u2039\0\u2082\0\u20cb\0\u2114\0\u215d" +
                    "\0\u21a6\0\u21ef\0\u2238\0\u2281\0\u22ca\0\u2313\0\u235c\0\u23a5" +
                    "\0\u23ee\0\u2437\0\u2480\0\u24c9\0\u0124\0\u2512\0\u255b\0\u0124" +
                    "\0\u25a4\0\u0124\0\u25ed\0\u2636\0\u267f\0\u26c8\0\u2711\0\u275a" +
                    "\0\u27a3\0\u0124\0\u27ec\0\u2835\0\u287e\0\u0124\0\u28c7\0\u2910" +
                    "\0\u2959\0\u29a2\0\u29eb\0\u2a34\0\u2a7d\0\u0124\0\u0124\0\u2ac6" +
                    "\0\u2b0f\0\u0124\0\u2b58\0\u2ba1\0\u2bea\0\u2c33\0\u2c7c\0\u2cc5" +
                    "\0\u2d0e\0\u2d57\0\u2da0\0\u0124\0\u2de9\0\u0124\0\u2e32\0\u2e7b" +
                    "\0\u2ec4\0\u2f0d\0\u2f56\0\u0124\0\u2f9f\0\u2fe8\0\u3031\0\u307a" +
                    "\0\u30c3\0\u310c\0\u3155\0\u319e\0\u31e7\0\u3230\0\u3279\0\u32c2" +
                    "\0\u330b\0\u3354\0\u339d\0\u0124\0\u33e6\0\u342f\0\u3478\0\u34c1" +
                    "\0\u350a\0\u3553\0\u359c\0\u0124\0\u35e5\0\u362e\0\u0124\0\u3677" +
                    "\0\u36c0\0\u3709\0\u0124\0\u3752\0\u379b\0\u37e4\0\u382d\0\u3876" +
                    "\0\u0124\0\u38bf\0\u3908\0\u3951\0\u399a\0\u39e3\0\u3a2c\0\u3a75" +
                    "\0\u0124\0\u0124\0\u3abe\0\u3b07\0\u3b50\0\u3b99\0\u3be2\0\u3c2b" +
                    "\0\u3c74\0\u0124\0\u3cbd\0\u3d06\0\u3d4f\0\u3d98\0\u3de1\0\u3e2a" +
                    "\0\u3e73\0\u3ebc\0\u3f05\0\u3f4e\0\u3f97\0\u3fe0\0\u4029\0\u4072" +
                    "\0\u40bb\0\u4104\0\u414d\0\u4196\0\u41df\0\u4228\0\u4271\0\u42ba" +
                    "\0\u0124\0\u0124\0\u4303\0\u434c\0\u0124\0\u4395\0\u0124\0\u43de" +
                    "\0\u4427\0\u0124\0\u4470\0\u44b9\0\u4502\0\u454b\0\u4594\0\u45dd" +
                    "\0\u4626\0\u0124\0\u466f\0\u46b8\0\u4701\0\u474a\0\u0124\0\u4793" +
                    "\0\u0124\0\u0124\0\u47dc\0\u4825\0\u0124\0\u486e\0\u48b7\0\u0124";

    private static int[] zzUnpackRowMap ()
    {
        int[] result = new int[312];
        int offset = 0;
        offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
        return result;
    }

    private static int zzUnpackRowMap (String packed, int offset, int[] result)
    {
        int i = 0;  /* index in packed string  */
        int j = offset;  /* index in unpacked array */
        int l = packed.length();
        while (i < l) {
            int high = packed.charAt(i++) << 16;
            result[j++] = high | packed.charAt(i++);
        }
        return j;
    }

    /**
     * The transition table of the DFA
     */
    private static final int[] ZZ_TRANS = zzUnpackTrans();

    private static final String ZZ_TRANS_PACKED_0 =
            "\1\2\2\3\1\4\1\5\1\6\1\7\1\10\1\11" +
                    "\1\12\1\13\1\14\1\15\1\16\1\17\1\20\1\7" +
                    "\1\21\5\6\1\2\1\6\1\22\1\23\1\24\1\25" +
                    "\1\26\1\27\1\30\1\2\1\31\1\32\1\33\1\34" +
                    "\1\35\1\36\1\37\1\6\1\40\3\6\1\41\1\6" +
                    "\1\42\1\43\1\44\1\45\1\46\1\6\1\47\1\6" +
                    "\1\50\1\51\3\6\1\52\3\6\1\53\10\6\112\0" +
                    "\2\3\111\0\1\54\1\55\111\0\2\6\1\56\4\0" +
                    "\1\56\2\0\2\6\1\0\5\6\1\0\1\6\12\0" +
                    "\46\6\6\0\1\7\5\0\1\57\2\0\2\7\1\60" +
                    "\2\0\1\61\2\62\1\0\1\63\13\0\1\61\2\0" +
                    "\1\63\5\0\1\61\4\0\2\63\7\0\1\63\1\0" +
                    "\1\61\6\0\1\63\11\0\1\64\1\0\1\65\1\66" +
                    "\4\0\1\67\4\0\5\64\1\0\1\64\12\0\46\64" +
                    "\12\70\1\71\76\70\13\72\1\73\75\72\6\0\1\74" +
                    "\10\0\2\74\76\0\1\75\5\0\1\57\2\0\2\76" +
                    "\1\77\1\100\1\0\1\61\2\62\1\0\1\63\13\0" +
                    "\1\61\2\0\1\63\5\0\1\61\4\0\2\63\7\0" +
                    "\1\63\1\0\1\61\6\0\1\63\1\100\43\0\1\101" +
                    "\55\0\2\6\1\56\4\0\1\56\2\0\2\6\1\0" +
                    "\5\6\1\0\1\6\12\0\1\6\1\102\13\6\1\103" +
                    "\30\6\5\0\2\6\1\56\4\0\1\56\2\0\2\6" +
                    "\1\0\5\6\1\0\1\6\12\0\2\6\1\104\43\6" +
                    "\5\0\2\6\1\56\4\0\1\56\2\0\2\6\1\0" +
                    "\5\6\1\0\1\6\12\0\1\105\16\6\1\106\26\6" +
                    "\5\0\2\6\1\56\4\0\1\56\2\0\2\6\1\0" +
                    "\3\6\1\107\1\6\1\0\1\6\12\0\46\6\5\0" +
                    "\2\6\1\56\4\0\1\56\2\0\2\6\1\0\5\6" +
                    "\1\0\1\6\12\0\5\6\1\110\40\6\5\0\2\6" +
                    "\1\56\4\0\1\56\2\0\2\6\1\0\5\6\1\0" +
                    "\1\6\12\0\2\6\1\111\12\6\1\112\30\6\5\0" +
                    "\2\6\1\56\4\0\1\56\2\0\2\6\1\0\5\6" +
                    "\1\0\1\6\12\0\15\6\1\113\30\6\5\0\2\6" +
                    "\1\56\4\0\1\56\2\0\2\6\1\0\3\6\1\114" +
                    "\1\6\1\0\1\6\12\0\11\6\1\115\34\6\5\0" +
                    "\2\6\1\56\4\0\1\56\2\0\2\6\1\0\5\6" +
                    "\1\0\1\6\12\0\6\6\1\116\11\6\1\117\25\6" +
                    "\5\0\2\6\1\56\4\0\1\56\2\0\2\6\1\0" +
                    "\3\6\1\120\1\6\1\0\1\6\12\0\46\6\5\0" +
                    "\2\6\1\56\4\0\1\56\2\0\2\6\1\0\5\6" +
                    "\1\0\1\6\12\0\5\6\1\121\40\6\5\0\2\6" +
                    "\1\56\4\0\1\56\2\0\2\6\1\0\3\6\1\122" +
                    "\1\6\1\0\1\6\12\0\5\6\1\123\40\6\5\0" +
                    "\2\6\1\56\4\0\1\56\2\0\2\6\1\0\5\6" +
                    "\1\0\1\6\12\0\15\6\1\124\30\6\5\0\2\6" +
                    "\1\56\4\0\1\56\2\0\2\6\1\0\5\6\1\0" +
                    "\1\6\12\0\2\6\1\125\2\6\1\126\40\6\5\0" +
                    "\2\6\1\56\4\0\1\56\2\0\2\6\1\0\5\6" +
                    "\1\0\1\6\12\0\3\6\1\127\42\6\5\0\2\6" +
                    "\1\56\4\0\1\56\2\0\2\6\1\0\5\6\1\0" +
                    "\1\6\12\0\26\6\1\130\1\131\2\6\1\132\13\6" +
                    "\5\0\2\6\1\56\4\0\1\56\2\0\2\6\1\0" +
                    "\5\6\1\0\1\6\12\0\11\6\1\133\34\6\2\54" +
                    "\1\0\106\54\4\55\1\134\104\55\5\0\3\56\4\0" +
                    "\1\56\2\0\2\56\1\0\5\56\1\0\1\56\12\0" +
                    "\46\56\6\0\1\57\10\0\2\57\76\0\1\135\10\0" +
                    "\2\135\1\136\5\0\1\136\66\0\2\64\5\0\1\64" +
                    "\2\0\2\64\1\0\5\64\1\0\1\64\12\0\46\64" +
                    "\10\0\1\66\100\0\11\66\1\137\77\66\5\0\2\67" +
                    "\7\0\1\140\2\67\1\0\5\67\1\0\1\67\12\0" +
                    "\46\67\6\0\1\74\10\0\2\74\1\63\3\0\1\141" +
                    "\2\0\1\63\16\0\1\63\12\0\2\63\7\0\1\63" +
                    "\10\0\1\63\12\0\1\75\5\0\1\57\2\0\2\75" +
                    "\1\142\3\0\2\62\1\0\1\63\16\0\1\63\12\0" +
                    "\2\63\7\0\1\63\10\0\1\63\12\0\1\75\5\0" +
                    "\1\57\2\0\2\76\1\60\2\0\1\61\2\62\1\0" +
                    "\1\63\13\0\1\61\2\0\1\63\5\0\1\61\4\0" +
                    "\2\63\7\0\1\63\1\0\1\61\6\0\1\63\12\0" +
                    "\1\143\10\0\3\143\1\0\1\143\1\0\2\143\1\136" +
                    "\1\143\12\0\1\143\1\0\1\143\1\0\1\143\12\0" +
                    "\2\143\7\0\1\143\5\0\1\143\2\0\1\143\12\0" +
                    "\1\143\10\0\3\143\1\0\1\143\1\0\2\143\1\0" +
                    "\1\143\12\0\1\143\1\0\1\143\1\0\1\143\12\0" +
                    "\2\143\7\0\1\143\5\0\1\143\2\0\1\143\11\0" +
                    "\2\6\1\56\4\0\1\56\2\0\2\6\1\0\5\6" +
                    "\1\0\1\6\12\0\2\6\1\144\43\6\5\0\2\6" +
                    "\1\56\4\0\1\56\2\0\2\6\1\0\5\6\1\0" +
                    "\1\6\12\0\22\6\1\145\23\6\5\0\2\6\1\56" +
                    "\4\0\1\56\2\0\2\6\1\0\5\6\1\0\1\6" +
                    "\12\0\7\6\1\146\10\6\1\147\25\6\5\0\2\6" +
                    "\1\56\4\0\1\56\2\0\2\6\1\0\5\6\1\0" +
                    "\1\6\12\0\14\6\1\150\31\6\5\0\2\6\1\56" +
                    "\4\0\1\56\2\0\2\6\1\0\5\6\1\0\1\6" +
                    "\12\0\14\6\1\151\31\6\5\0\2\6\1\56\4\0" +
                    "\1\56\2\0\2\6\1\0\5\6\1\0\1\6\12\0" +
                    "\2\6\1\152\43\6\5\0\2\6\1\56\4\0\1\56" +
                    "\2\0\2\6\1\0\5\6\1\0\1\6\12\0\3\6" +
                    "\1\153\42\6\5\0\2\6\1\56\4\0\1\56\2\0" +
                    "\2\6\1\0\5\6\1\0\1\6\12\0\21\6\1\154" +
                    "\24\6\5\0\2\6\1\56\4\0\1\56\2\0\2\6" +
                    "\1\0\5\6\1\0\1\6\12\0\11\6\1\155\34\6" +
                    "\5\0\2\6\1\56\4\0\1\56\2\0\2\6\1\0" +
                    "\5\6\1\0\1\6\12\0\22\6\1\156\23\6\5\0" +
                    "\2\6\1\56\4\0\1\56\2\0\2\6\1\0\5\6" +
                    "\1\0\1\6\12\0\42\6\1\157\3\6\5\0\2\6" +
                    "\1\56\4\0\1\56\2\0\2\6\1\0\5\6\1\0" +
                    "\1\6\12\0\2\6\1\160\43\6\5\0\2\6\1\56" +
                    "\4\0\1\56\2\0\2\6\1\0\3\6\1\161\1\6" +
                    "\1\0\1\6\12\0\46\6\5\0\2\6\1\56\4\0" +
                    "\1\56\2\0\2\6\1\0\5\6\1\0\1\6\12\0" +
                    "\23\6\1\162\22\6\5\0\2\6\1\56\4\0\1\56" +
                    "\2\0\2\6\1\0\3\6\1\163\1\6\1\0\1\6" +
                    "\12\0\46\6\5\0\2\6\1\56\4\0\1\56\2\0" +
                    "\2\6\1\0\3\6\1\164\1\6\1\0\1\6\12\0" +
                    "\46\6\5\0\2\6\1\56\4\0\1\56\2\0\2\6" +
                    "\1\0\5\6\1\0\1\6\12\0\17\6\1\165\26\6" +
                    "\5\0\2\6\1\56\4\0\1\56\2\0\2\6\1\0" +
                    "\5\6\1\0\1\6\12\0\16\6\1\166\27\6\5\0" +
                    "\2\6\1\56\4\0\1\56\2\0\2\6\1\0\5\6" +
                    "\1\0\1\6\12\0\4\6\1\167\41\6\5\0\2\6" +
                    "\1\56\4\0\1\56\2\0\2\6\1\0\5\6\1\0" +
                    "\1\6\12\0\1\6\1\170\44\6\5\0\2\6\1\56" +
                    "\4\0\1\56\2\0\2\6\1\0\5\6\1\0\1\6" +
                    "\12\0\3\6\1\171\42\6\5\0\2\6\1\56\4\0" +
                    "\1\56\2\0\2\6\1\0\3\6\1\172\1\6\1\0" +
                    "\1\6\12\0\46\6\5\0\2\6\1\56\4\0\1\56" +
                    "\2\0\2\6\1\0\5\6\1\0\1\6\12\0\5\6" +
                    "\1\173\40\6\5\0\2\6\1\56\4\0\1\56\2\0" +
                    "\2\6\1\0\5\6\1\0\1\6\12\0\15\6\1\174" +
                    "\30\6\5\0\2\6\1\56\4\0\1\56\2\0\2\6" +
                    "\1\0\3\6\1\175\1\6\1\0\1\6\12\0\46\6" +
                    "\5\0\2\6\1\56\4\0\1\56\2\0\2\6\1\0" +
                    "\5\6\1\0\1\6\12\0\2\6\1\176\43\6\3\55" +
                    "\1\177\1\134\104\55\6\0\1\135\10\0\2\135\1\63" +
                    "\6\0\1\63\16\0\1\63\12\0\2\63\7\0\1\63" +
                    "\10\0\1\63\12\0\1\135\10\0\2\135\111\0\1\200" +
                    "\75\0\1\143\10\0\3\143\1\0\1\143\1\61\2\143" +
                    "\1\0\1\143\12\0\1\143\1\61\1\143\1\0\1\143" +
                    "\5\0\1\61\4\0\2\143\7\0\1\143\1\0\1\61" +
                    "\3\0\1\143\2\0\1\143\11\0\2\6\1\56\4\0" +
                    "\1\56\2\0\2\6\1\0\5\6\1\0\1\6\12\0" +
                    "\3\6\1\201\42\6\5\0\2\6\1\56\4\0\1\56" +
                    "\2\0\2\6\1\0\5\6\1\0\1\6\12\0\6\6" +
                    "\1\202\37\6\5\0\2\6\1\56\4\0\1\56\2\0" +
                    "\2\6\1\0\5\6\1\0\1\6\12\0\15\6\1\203" +
                    "\30\6\5\0\2\6\1\56\4\0\1\56\2\0\2\6" +
                    "\1\0\3\6\1\204\1\6\1\0\1\6\12\0\46\6" +
                    "\5\0\2\6\1\56\4\0\1\56\2\0\2\6\1\0" +
                    "\5\6\1\0\1\6\12\0\5\6\1\205\40\6\5\0" +
                    "\2\6\1\56\4\0\1\56\2\0\2\6\1\0\3\6" +
                    "\1\206\1\6\1\0\1\6\12\0\46\6\5\0\2\6" +
                    "\1\56\4\0\1\56\2\0\2\6\1\0\5\6\1\0" +
                    "\1\6\12\0\11\6\1\207\34\6\5\0\2\6\1\56" +
                    "\4\0\1\56\2\0\2\6\1\0\5\6\1\0\1\6" +
                    "\12\0\6\6\1\210\37\6\5\0\2\6\1\56\4\0" +
                    "\1\56\2\0\2\6\1\0\3\6\1\211\1\6\1\0" +
                    "\1\6\12\0\46\6\5\0\2\6\1\56\4\0\1\56" +
                    "\2\0\2\6\1\0\5\6\1\0\1\6\12\0\14\6" +
                    "\1\212\31\6\5\0\2\6\1\56\4\0\1\56\2\0" +
                    "\2\6\1\0\3\6\1\213\1\6\1\0\1\6\12\0" +
                    "\46\6\5\0\2\6\1\56\4\0\1\56\2\0\2\6" +
                    "\1\0\5\6\1\0\1\6\12\0\14\6\1\214\31\6" +
                    "\5\0\2\6\1\56\4\0\1\56\2\0\2\6\1\0" +
                    "\5\6\1\0\1\6\12\0\5\6\1\215\40\6\5\0" +
                    "\2\6\1\56\4\0\1\56\2\0\2\6\1\0\5\6" +
                    "\1\0\1\6\12\0\11\6\1\216\34\6\5\0\2\6" +
                    "\1\56\4\0\1\56\2\0\2\6\1\0\3\6\1\217" +
                    "\1\6\1\0\1\6\12\0\46\6\5\0\2\6\1\56" +
                    "\4\0\1\56\2\0\2\6\1\0\5\6\1\0\1\6" +
                    "\12\0\4\6\1\220\41\6\5\0\2\6\1\56\4\0" +
                    "\1\56\2\0\2\6\1\0\5\6\1\0\1\6\12\0" +
                    "\1\6\1\221\44\6\5\0\2\6\1\56\4\0\1\56" +
                    "\2\0\2\6\1\0\5\6\1\0\1\6\12\0\15\6" +
                    "\1\222\30\6\5\0\2\6\1\56\4\0\1\56\2\0" +
                    "\2\6\1\0\5\6\1\0\1\6\12\0\4\6\1\223" +
                    "\41\6\5\0\2\6\1\56\4\0\1\56\2\0\2\6" +
                    "\1\0\5\6\1\0\1\6\12\0\25\6\1\224\20\6" +
                    "\5\0\2\6\1\56\4\0\1\56\2\0\2\6\1\0" +
                    "\5\6\1\0\1\6\12\0\25\6\1\225\20\6\5\0" +
                    "\2\6\1\56\4\0\1\56\2\0\2\6\1\0\5\6" +
                    "\1\0\1\6\12\0\5\6\1\226\40\6\5\0\2\6" +
                    "\1\56\4\0\1\56\2\0\2\6\1\0\5\6\1\0" +
                    "\1\6\12\0\44\6\1\227\1\6\5\0\2\6\1\56" +
                    "\4\0\1\56\2\0\2\6\1\0\5\6\1\0\1\6" +
                    "\12\0\21\6\1\230\24\6\5\0\2\6\1\56\4\0" +
                    "\1\56\2\0\2\6\1\0\5\6\1\0\1\6\12\0" +
                    "\16\6\1\231\27\6\5\0\2\6\1\56\4\0\1\56" +
                    "\2\0\2\6\1\0\5\6\1\0\1\6\12\0\17\6" +
                    "\1\232\26\6\5\0\2\6\1\56\4\0\1\56\2\0" +
                    "\2\6\1\0\5\6\1\0\1\6\12\0\6\6\1\233" +
                    "\37\6\26\0\1\234\67\0\2\6\1\56\4\0\1\56" +
                    "\2\0\2\6\1\0\5\6\1\0\1\6\12\0\3\6" +
                    "\1\235\42\6\5\0\2\6\1\56\4\0\1\56\2\0" +
                    "\2\6\1\0\5\6\1\0\1\6\12\0\15\6\1\236" +
                    "\30\6\5\0\2\6\1\56\4\0\1\56\2\0\2\6" +
                    "\1\0\5\6\1\0\1\6\12\0\25\6\1\237\20\6" +
                    "\5\0\2\6\1\56\4\0\1\56\2\0\2\6\1\0" +
                    "\5\6\1\0\1\6\12\0\1\6\1\240\44\6\5\0" +
                    "\2\6\1\56\4\0\1\56\2\0\2\6\1\0\5\6" +
                    "\1\0\1\6\12\0\15\6\1\241\30\6\5\0\2\6" +
                    "\1\56\4\0\1\56\2\0\2\6\1\0\5\6\1\0" +
                    "\1\6\12\0\11\6\1\242\34\6\5\0\2\6\1\56" +
                    "\4\0\1\56\2\0\2\6\1\0\5\6\1\0\1\6" +
                    "\12\0\1\243\45\6\5\0\2\6\1\56\4\0\1\56" +
                    "\2\0\2\6\1\0\5\6\1\0\1\6\12\0\1\6" +
                    "\1\244\44\6\5\0\2\6\1\56\4\0\1\56\2\0" +
                    "\2\6\1\0\5\6\1\0\1\6\12\0\27\6\1\245" +
                    "\1\246\15\6\5\0\2\6\1\56\4\0\1\56\2\0" +
                    "\2\6\1\0\5\6\1\0\1\6\12\0\1\6\1\247" +
                    "\44\6\5\0\2\6\1\56\4\0\1\56\2\0\2\6" +
                    "\1\0\5\6\1\0\1\6\12\0\33\6\1\250\12\6" +
                    "\5\0\2\6\1\56\4\0\1\56\2\0\2\6\1\0" +
                    "\5\6\1\0\1\6\12\0\43\6\1\251\2\6\5\0" +
                    "\2\6\1\56\4\0\1\56\2\0\2\6\1\0\5\6" +
                    "\1\0\1\6\12\0\14\6\1\252\31\6\5\0\2\6" +
                    "\1\56\4\0\1\56\2\0\2\6\1\0\5\6\1\0" +
                    "\1\6\12\0\2\6\1\253\43\6\5\0\2\6\1\56" +
                    "\4\0\1\56\2\0\2\6\1\0\5\6\1\0\1\6" +
                    "\12\0\1\254\45\6\5\0\2\6\1\56\4\0\1\56" +
                    "\2\0\2\6\1\0\5\6\1\0\1\6\12\0\3\6" +
                    "\1\255\42\6\5\0\2\6\1\56\4\0\1\56\2\0" +
                    "\2\6\1\0\5\6\1\0\1\6\12\0\4\6\1\256" +
                    "\41\6\5\0\2\6\1\56\4\0\1\56\2\0\2\6" +
                    "\1\0\5\6\1\0\1\6\12\0\11\6\1\257\34\6" +
                    "\5\0\2\6\1\56\4\0\1\56\2\0\2\6\1\0" +
                    "\5\6\1\0\1\6\12\0\5\6\1\260\40\6\5\0" +
                    "\2\6\1\56\4\0\1\56\2\0\2\6\1\0\5\6" +
                    "\1\0\1\6\12\0\1\6\1\261\44\6\5\0\2\6" +
                    "\1\56\4\0\1\56\2\0\2\6\1\0\3\6\1\262" +
                    "\1\6\1\0\1\6\12\0\46\6\5\0\2\6\1\56" +
                    "\4\0\1\56\2\0\2\6\1\0\5\6\1\0\1\6" +
                    "\12\0\20\6\1\263\25\6\5\0\2\6\1\56\4\0" +
                    "\1\56\2\0\2\6\1\0\3\6\1\264\1\6\1\0" +
                    "\1\6\12\0\46\6\5\0\2\6\1\56\4\0\1\56" +
                    "\2\0\2\6\1\0\5\6\1\0\1\6\12\0\12\6" +
                    "\1\265\33\6\5\0\2\6\1\56\4\0\1\56\2\0" +
                    "\2\6\1\0\3\6\1\266\1\6\1\0\1\6\12\0" +
                    "\46\6\5\0\2\6\1\56\4\0\1\56\2\0\2\6" +
                    "\1\0\5\6\1\0\1\6\12\0\14\6\1\267\31\6" +
                    "\5\0\2\6\1\56\4\0\1\56\2\0\2\6\1\0" +
                    "\5\6\1\0\1\6\12\0\6\6\1\270\37\6\16\0" +
                    "\1\62\77\0\2\6\1\56\4\0\1\56\2\0\2\6" +
                    "\1\0\5\6\1\0\1\6\12\0\16\6\1\271\27\6" +
                    "\5\0\2\6\1\56\4\0\1\56\2\0\2\6\1\0" +
                    "\5\6\1\0\1\6\12\0\14\6\1\272\31\6\5\0" +
                    "\2\6\1\56\4\0\1\56\2\0\2\6\1\0\5\6" +
                    "\1\0\1\6\12\0\16\6\1\273\27\6\5\0\2\6" +
                    "\1\56\4\0\1\56\2\0\2\6\1\0\5\6\1\0" +
                    "\1\6\12\0\12\6\1\274\33\6\5\0\2\6\1\56" +
                    "\4\0\1\56\2\0\2\6\1\0\5\6\1\0\1\6" +
                    "\12\0\2\6\1\275\43\6\5\0\2\6\1\56\4\0" +
                    "\1\56\2\0\2\6\1\0\5\6\1\0\1\6\12\0" +
                    "\2\6\1\276\43\6\5\0\2\6\1\56\4\0\1\56" +
                    "\2\0\2\6\1\0\5\6\1\0\1\6\12\0\5\6" +
                    "\1\277\40\6\5\0\2\6\1\56\4\0\1\56\2\0" +
                    "\2\6\1\0\3\6\1\300\1\6\1\0\1\6\12\0" +
                    "\46\6\5\0\2\6\1\56\4\0\1\56\2\0\2\6" +
                    "\1\0\5\6\1\0\1\6\12\0\2\6\1\301\43\6" +
                    "\5\0\2\6\1\56\4\0\1\56\2\0\2\6\1\0" +
                    "\3\6\1\302\1\6\1\0\1\6\12\0\46\6\5\0" +
                    "\2\6\1\56\4\0\1\56\2\0\2\6\1\0\5\6" +
                    "\1\0\1\6\12\0\14\6\1\303\31\6\5\0\2\6" +
                    "\1\56\4\0\1\56\2\0\2\6\1\0\5\6\1\0" +
                    "\1\6\12\0\14\6\1\304\31\6\5\0\2\6\1\56" +
                    "\4\0\1\56\2\0\2\6\1\0\5\6\1\0\1\6" +
                    "\12\0\41\6\1\305\4\6\5\0\2\6\1\56\4\0" +
                    "\1\56\2\0\2\6\1\0\3\6\1\306\1\6\1\0" +
                    "\1\6\12\0\46\6\5\0\2\6\1\56\4\0\1\56" +
                    "\2\0\2\6\1\0\5\6\1\0\1\6\12\0\16\6" +
                    "\1\307\27\6\5\0\2\6\1\56\4\0\1\56\2\0" +
                    "\2\6\1\0\3\6\1\310\1\6\1\0\1\6\12\0" +
                    "\46\6\5\0\2\6\1\56\4\0\1\56\2\0\2\6" +
                    "\1\0\5\6\1\0\1\6\12\0\26\6\1\311\17\6" +
                    "\5\0\2\6\1\56\4\0\1\56\2\0\2\6\1\0" +
                    "\5\6\1\0\1\6\12\0\1\6\1\312\44\6\5\0" +
                    "\2\6\1\56\4\0\1\56\2\0\2\6\1\0\5\6" +
                    "\1\0\1\6\12\0\42\6\1\313\3\6\5\0\2\6" +
                    "\1\56\4\0\1\56\2\0\2\6\1\0\5\6\1\0" +
                    "\1\6\12\0\14\6\1\314\31\6\5\0\2\6\1\56" +
                    "\4\0\1\56\2\0\2\6\1\0\3\6\1\315\1\6" +
                    "\1\0\1\6\12\0\46\6\5\0\2\6\1\56\4\0" +
                    "\1\56\2\0\2\6\1\0\3\6\1\316\1\6\1\0" +
                    "\1\6\12\0\46\6\5\0\2\6\1\56\4\0\1\56" +
                    "\2\0\2\6\1\0\5\6\1\0\1\6\12\0\26\6" +
                    "\1\317\17\6\5\0\2\6\1\56\4\0\1\56\2\0" +
                    "\2\6\1\0\5\6\1\0\1\6\12\0\13\6\1\320" +
                    "\32\6\5\0\2\6\1\56\4\0\1\56\2\0\2\6" +
                    "\1\0\5\6\1\0\1\6\12\0\7\6\1\321\36\6" +
                    "\5\0\2\6\1\56\4\0\1\56\2\0\2\6\1\0" +
                    "\5\6\1\0\1\6\12\0\22\6\1\322\23\6\5\0" +
                    "\2\6\1\56\4\0\1\56\2\0\2\6\1\0\5\6" +
                    "\1\0\1\6\12\0\16\6\1\323\27\6\5\0\2\6" +
                    "\1\56\4\0\1\56\2\0\2\6\1\0\5\6\1\0" +
                    "\1\6\12\0\14\6\1\324\31\6\5\0\2\6\1\56" +
                    "\4\0\1\56\2\0\2\6\1\0\5\6\1\0\1\6" +
                    "\12\0\21\6\1\325\24\6\5\0\2\6\1\56\4\0" +
                    "\1\56\2\0\2\6\1\0\5\6\1\0\1\6\12\0" +
                    "\2\6\1\326\43\6\5\0\2\6\1\56\4\0\1\56" +
                    "\2\0\2\6\1\0\5\6\1\0\1\6\12\0\5\6" +
                    "\1\327\40\6\5\0\2\6\1\56\4\0\1\56\2\0" +
                    "\2\6\1\0\5\6\1\0\1\6\12\0\15\6\1\330" +
                    "\30\6\5\0\2\6\1\56\4\0\1\56\2\0\2\6" +
                    "\1\0\5\6\1\0\1\6\12\0\21\6\1\331\24\6" +
                    "\5\0\2\6\1\56\4\0\1\56\2\0\2\6\1\0" +
                    "\5\6\1\0\1\6\12\0\34\6\1\332\11\6\5\0" +
                    "\2\6\1\56\4\0\1\56\2\0\2\6\1\0\3\6" +
                    "\1\333\1\6\1\0\1\6\12\0\46\6\5\0\2\6" +
                    "\1\56\4\0\1\56\2\0\2\6\1\0\3\6\1\334" +
                    "\1\6\1\0\1\6\12\0\46\6\5\0\2\6\1\56" +
                    "\4\0\1\56\2\0\2\6\1\0\5\6\1\0\1\6" +
                    "\12\0\14\6\1\335\31\6\5\0\2\6\1\56\4\0" +
                    "\1\56\2\0\2\6\1\0\5\6\1\0\1\6\12\0" +
                    "\11\6\1\336\34\6\5\0\2\6\1\56\4\0\1\56" +
                    "\2\0\2\6\1\0\5\6\1\0\1\6\12\0\16\6" +
                    "\1\337\27\6\5\0\2\6\1\56\4\0\1\56\2\0" +
                    "\2\6\1\0\3\6\1\340\1\6\1\0\1\6\12\0" +
                    "\46\6\5\0\2\6\1\56\4\0\1\56\2\0\2\6" +
                    "\1\0\5\6\1\0\1\6\12\0\6\6\1\341\37\6" +
                    "\5\0\2\6\1\56\4\0\1\56\2\0\2\6\1\0" +
                    "\5\6\1\0\1\6\12\0\10\6\1\342\27\6\1\343" +
                    "\5\6\5\0\2\6\1\56\4\0\1\56\2\0\2\6" +
                    "\1\0\3\6\1\344\1\6\1\0\1\6\12\0\46\6" +
                    "\5\0\2\6\1\56\4\0\1\56\2\0\2\6\1\0" +
                    "\5\6\1\0\1\6\12\0\4\6\1\345\41\6\5\0" +
                    "\2\6\1\56\4\0\1\56\2\0\2\6\1\0\5\6" +
                    "\1\0\1\6\12\0\37\6\1\346\6\6\5\0\2\6" +
                    "\1\56\4\0\1\56\2\0\2\6\1\0\3\6\1\347" +
                    "\1\6\1\0\1\6\12\0\46\6\5\0\2\6\1\56" +
                    "\4\0\1\56\2\0\2\6\1\0\5\6\1\0\1\6" +
                    "\12\0\11\6\1\350\34\6\5\0\2\6\1\56\4\0" +
                    "\1\56\2\0\2\6\1\0\5\6\1\0\1\6\12\0" +
                    "\15\6\1\351\30\6\5\0\2\6\1\56\4\0\1\56" +
                    "\2\0\2\6\1\0\5\6\1\0\1\6\12\0\11\6" +
                    "\1\352\34\6\5\0\2\6\1\56\4\0\1\56\2\0" +
                    "\2\6\1\0\5\6\1\0\1\6\12\0\3\6\1\353" +
                    "\42\6\5\0\2\6\1\56\4\0\1\56\2\0\2\6" +
                    "\1\0\5\6\1\0\1\6\12\0\14\6\1\354\31\6" +
                    "\5\0\2\6\1\56\4\0\1\56\2\0\2\6\1\0" +
                    "\5\6\1\0\1\6\12\0\4\6\1\355\41\6\5\0" +
                    "\2\6\1\56\4\0\1\56\2\0\2\6\1\0\5\6" +
                    "\1\0\1\6\12\0\45\6\1\356\5\0\2\6\1\56" +
                    "\4\0\1\56\2\0\2\6\1\0\5\6\1\0\1\6" +
                    "\12\0\30\6\1\357\5\6\1\360\7\6\5\0\2\6" +
                    "\1\56\4\0\1\56\2\0\2\6\1\0\5\6\1\0" +
                    "\1\6\12\0\14\6\1\361\31\6\5\0\2\6\1\56" +
                    "\4\0\1\56\2\0\2\6\1\0\5\6\1\0\1\6" +
                    "\12\0\3\6\1\362\42\6\5\0\2\6\1\56\4\0" +
                    "\1\56\2\0\2\6\1\0\3\6\1\363\1\6\1\0" +
                    "\1\6\12\0\46\6\5\0\2\6\1\56\4\0\1\56" +
                    "\2\0\2\6\1\0\3\6\1\364\1\6\1\0\1\6" +
                    "\12\0\46\6\5\0\2\6\1\56\4\0\1\56\2\0" +
                    "\2\6\1\0\5\6\1\0\1\6\12\0\11\6\1\365" +
                    "\34\6\5\0\2\6\1\56\4\0\1\56\2\0\2\6" +
                    "\1\0\5\6\1\0\1\6\12\0\5\6\1\366\40\6" +
                    "\5\0\2\6\1\56\4\0\1\56\2\0\2\6\1\0" +
                    "\5\6\1\0\1\6\12\0\11\6\1\367\34\6\5\0" +
                    "\2\6\1\56\4\0\1\56\2\0\2\6\1\0\5\6" +
                    "\1\0\1\6\12\0\1\370\45\6\5\0\2\6\1\56" +
                    "\4\0\1\56\2\0\2\6\1\0\5\6\1\0\1\6" +
                    "\12\0\16\6\1\371\27\6\5\0\2\6\1\56\4\0" +
                    "\1\56\2\0\2\6\1\0\5\6\1\0\1\6\12\0" +
                    "\22\6\1\372\23\6\5\0\2\6\1\56\4\0\1\56" +
                    "\2\0\2\6\1\0\5\6\1\0\1\6\12\0\11\6" +
                    "\1\373\34\6\5\0\2\6\1\56\4\0\1\56\2\0" +
                    "\2\6\1\0\5\6\1\0\1\6\12\0\5\6\1\374" +
                    "\40\6\5\0\2\6\1\56\4\0\1\56\2\0\2\6" +
                    "\1\0\5\6\1\0\1\6\12\0\16\6\1\375\27\6" +
                    "\5\0\2\6\1\56\4\0\1\56\2\0\2\6\1\0" +
                    "\5\6\1\0\1\6\12\0\5\6\1\376\40\6\5\0" +
                    "\2\6\1\56\4\0\1\56\2\0\2\6\1\0\5\6" +
                    "\1\0\1\6\12\0\15\6\1\377\30\6\5\0\2\6" +
                    "\1\56\4\0\1\56\2\0\2\6\1\0\5\6\1\0" +
                    "\1\6\12\0\25\6\1\u0100\20\6\5\0\2\6\1\56" +
                    "\4\0\1\56\2\0\2\6\1\0\5\6\1\0\1\6" +
                    "\12\0\11\6\1\u0101\34\6\5\0\2\6\1\56\4\0" +
                    "\1\56\2\0\2\6\1\0\5\6\1\0\1\6\12\0" +
                    "\7\6\1\u0102\36\6\5\0\2\6\1\56\4\0\1\56" +
                    "\2\0\2\6\1\0\5\6\1\0\1\6\12\0\15\6" +
                    "\1\u0103\30\6\5\0\2\6\1\56\4\0\1\56\2\0" +
                    "\2\6\1\0\5\6\1\0\1\6\12\0\16\6\1\u0104" +
                    "\27\6\5\0\2\6\1\56\4\0\1\56\2\0\2\6" +
                    "\1\0\5\6\1\0\1\6\12\0\2\6\1\u0105\43\6" +
                    "\5\0\2\6\1\56\4\0\1\56\2\0\2\6\1\0" +
                    "\5\6\1\0\1\6\12\0\12\6\1\u0106\33\6\5\0" +
                    "\2\6\1\56\4\0\1\56\2\0\2\6\1\0\5\6" +
                    "\1\0\1\6\12\0\2\6\1\u0107\43\6\5\0\2\6" +
                    "\1\56\4\0\1\56\2\0\2\6\1\0\5\6\1\0" +
                    "\1\6\12\0\11\6\1\u0108\34\6\5\0\2\6\1\56" +
                    "\4\0\1\56\2\0\2\6\1\0\5\6\1\0\1\6" +
                    "\12\0\4\6\1\u0109\41\6\5\0\2\6\1\56\4\0" +
                    "\1\56\2\0\2\6\1\0\5\6\1\0\1\6\12\0" +
                    "\16\6\1\u010a\27\6\5\0\2\6\1\56\4\0\1\56" +
                    "\2\0\2\6\1\0\5\6\1\0\1\6\12\0\22\6" +
                    "\1\u010b\23\6\5\0\2\6\1\56\4\0\1\56\2\0" +
                    "\2\6\1\0\5\6\1\0\1\6\12\0\1\6\1\u010c" +
                    "\44\6\5\0\2\6\1\56\4\0\1\56\2\0\2\6" +
                    "\1\0\5\6\1\0\1\6\12\0\2\6\1\u010d\43\6" +
                    "\5\0\2\6\1\56\4\0\1\56\2\0\2\6\1\0" +
                    "\5\6\1\0\1\6\12\0\25\6\1\u010e\20\6\5\0" +
                    "\2\6\1\56\4\0\1\56\2\0\2\6\1\0\5\6" +
                    "\1\0\1\6\12\0\21\6\1\u010f\24\6\5\0\2\6" +
                    "\1\56\4\0\1\56\2\0\2\6\1\0\5\6\1\0" +
                    "\1\6\12\0\6\6\1\u0110\37\6\5\0\2\6\1\56" +
                    "\4\0\1\56\2\0\2\6\1\0\5\6\1\0\1\6" +
                    "\12\0\43\6\1\u0111\2\6\5\0\2\6\1\56\4\0" +
                    "\1\56\2\0\2\6\1\0\5\6\1\0\1\6\12\0" +
                    "\5\6\1\u0112\40\6\5\0\2\6\1\56\4\0\1\56" +
                    "\2\0\2\6\1\0\3\6\1\u0113\1\6\1\0\1\6" +
                    "\12\0\46\6\5\0\2\6\1\56\4\0\1\56\2\0" +
                    "\2\6\1\0\3\6\1\u0114\1\6\1\0\1\6\12\0" +
                    "\46\6\5\0\2\6\1\56\4\0\1\56\2\0\2\6" +
                    "\1\0\5\6\1\0\1\6\12\0\4\6\1\u0115\41\6" +
                    "\5\0\2\6\1\56\4\0\1\56\2\0\2\6\1\0" +
                    "\5\6\1\0\1\6\12\0\6\6\1\u0116\37\6\5\0" +
                    "\2\6\1\56\4\0\1\56\2\0\2\6\1\0\5\6" +
                    "\1\0\1\6\12\0\14\6\1\u0117\31\6\5\0\2\6" +
                    "\1\56\4\0\1\56\2\0\2\6\1\0\5\6\1\0" +
                    "\1\6\12\0\14\6\1\u0118\31\6\5\0\2\6\1\56" +
                    "\4\0\1\56\2\0\2\6\1\0\5\6\1\0\1\6" +
                    "\12\0\6\6\1\u0119\37\6\5\0\2\6\1\56\4\0" +
                    "\1\56\2\0\2\6\1\0\5\6\1\0\1\6\12\0" +
                    "\3\6\1\u011a\42\6\5\0\2\6\1\56\4\0\1\56" +
                    "\2\0\2\6\1\0\5\6\1\0\1\6\12\0\6\6" +
                    "\1\u011b\37\6\5\0\2\6\1\56\4\0\1\56\2\0" +
                    "\2\6\1\0\5\6\1\0\1\6\12\0\25\6\1\u011c" +
                    "\20\6\5\0\2\6\1\56\4\0\1\56\2\0\2\6" +
                    "\1\0\5\6\1\0\1\6\12\0\14\6\1\u011d\31\6" +
                    "\5\0\2\6\1\56\4\0\1\56\2\0\2\6\1\0" +
                    "\5\6\1\0\1\6\12\0\1\u011e\45\6\5\0\2\6" +
                    "\1\56\4\0\1\56\2\0\2\6\1\0\5\6\1\0" +
                    "\1\6\12\0\42\6\1\u011f\3\6\5\0\2\6\1\56" +
                    "\4\0\1\56\2\0\2\6\1\0\5\6\1\0\1\6" +
                    "\12\0\5\6\1\u0120\40\6\5\0\2\6\1\56\4\0" +
                    "\1\56\2\0\2\6\1\0\5\6\1\0\1\6\12\0" +
                    "\15\6\1\u0121\30\6\5\0\2\6\1\56\4\0\1\56" +
                    "\2\0\2\6\1\0\5\6\1\0\1\6\12\0\3\6" +
                    "\1\u0122\42\6\5\0\2\6\1\56\4\0\1\56\2\0" +
                    "\2\6\1\0\5\6\1\0\1\6\12\0\5\6\1\u0123" +
                    "\40\6\5\0\2\6\1\56\4\0\1\56\2\0\2\6" +
                    "\1\0\3\6\1\u0124\1\6\1\0\1\6\12\0\46\6" +
                    "\5\0\2\6\1\56\4\0\1\56\2\0\2\6\1\0" +
                    "\5\6\1\0\1\6\12\0\6\6\1\u0125\37\6\5\0" +
                    "\2\6\1\56\4\0\1\56\2\0\2\6\1\0\5\6" +
                    "\1\0\1\6\12\0\14\6\1\u0126\31\6\5\0\2\6" +
                    "\1\56\4\0\1\56\2\0\2\6\1\0\5\6\1\0" +
                    "\1\6\12\0\16\6\1\u0127\27\6\5\0\2\6\1\56" +
                    "\4\0\1\56\2\0\2\6\1\0\5\6\1\0\1\6" +
                    "\12\0\16\6\1\u0128\27\6\5\0\2\6\1\56\4\0" +
                    "\1\56\2\0\2\6\1\0\5\6\1\0\1\6\12\0" +
                    "\15\6\1\u0129\30\6\5\0\2\6\1\56\4\0\1\56" +
                    "\2\0\2\6\1\0\5\6\1\0\1\6\12\0\11\6" +
                    "\1\u012a\34\6\5\0\2\6\1\56\4\0\1\56\2\0" +
                    "\2\6\1\0\5\6\1\0\1\6\12\0\6\6\1\u012b" +
                    "\37\6\5\0\2\6\1\56\4\0\1\56\2\0\2\6" +
                    "\1\0\5\6\1\0\1\6\12\0\15\6\1\u012c\30\6" +
                    "\5\0\2\6\1\56\4\0\1\56\2\0\2\6\1\0" +
                    "\5\6\1\0\1\6\12\0\21\6\1\u012d\24\6\5\0" +
                    "\2\6\1\56\4\0\1\56\2\0\2\6\1\0\3\6" +
                    "\1\u012e\1\6\1\0\1\6\12\0\46\6\5\0\2\6" +
                    "\1\56\4\0\1\56\2\0\2\6\1\0\5\6\1\0" +
                    "\1\6\12\0\16\6\1\u012f\27\6\5\0\2\6\1\56" +
                    "\4\0\1\56\2\0\2\6\1\0\5\6\1\0\1\6" +
                    "\12\0\15\6\1\u0130\30\6\5\0\2\6\1\56\4\0" +
                    "\1\56\2\0\2\6\1\0\5\6\1\0\1\6\12\0" +
                    "\11\6\1\u0131\34\6\5\0\2\6\1\56\4\0\1\56" +
                    "\2\0\2\6\1\0\5\6\1\0\1\6\12\0\3\6" +
                    "\1\u0132\42\6\5\0\2\6\1\56\4\0\1\56\2\0" +
                    "\2\6\1\0\5\6\1\0\1\6\12\0\16\6\1\u0133" +
                    "\27\6\5\0\2\6\1\56\4\0\1\56\2\0\2\6" +
                    "\1\0\5\6\1\0\1\6\12\0\11\6\1\u0134\34\6" +
                    "\5\0\2\6\1\56\4\0\1\56\2\0\2\6\1\0" +
                    "\5\6\1\0\1\6\12\0\14\6\1\u0135\31\6\5\0" +
                    "\2\6\1\56\4\0\1\56\2\0\2\6\1\0\5\6" +
                    "\1\0\1\6\12\0\14\6\1\u0136\31\6\5\0\2\6" +
                    "\1\56\4\0\1\56\2\0\2\6\1\0\3\6\1\u0137" +
                    "\1\6\1\0\1\6\12\0\46\6\5\0\2\6\1\56" +
                    "\4\0\1\56\2\0\2\6\1\0\5\6\1\0\1\6" +
                    "\12\0\4\6\1\u0138\41\6";

    private static int[] zzUnpackTrans ()
    {
        int[] result = new int[18688];
        int offset = 0;
        offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
        return result;
    }

    private static int zzUnpackTrans (String packed, int offset, int[] result)
    {
        int i = 0;       /* index in packed string  */
        int j = offset;  /* index in unpacked array */
        int l = packed.length();
        while (i < l) {
            int count = packed.charAt(i++);
            int value = packed.charAt(i++);
            value--;
            do result[j++] = value; while (--count > 0);
        }
        return j;
    }


    /* error codes */
    private static final int ZZ_UNKNOWN_ERROR = 0;
    private static final int ZZ_NO_MATCH = 1;
    private static final int ZZ_PUSHBACK_2BIG = 2;
    private static final char[] EMPTY_BUFFER = new char[0];
    private static final int YYEOF = -1;
    private static java.io.Reader zzReader = null; // Fake

    /* error messages for the codes above */
    private static final String ZZ_ERROR_MSG[] = {
            "Unkown internal scanner error",
            "Error: could not match input",
            "Error: pushback value was too large"
    };

    /**
     * ZZ_ATTRIBUTE[aState] contains the attributes of state <code>aState</code>
     */
    private static final int[] ZZ_ATTRIBUTE = zzUnpackAttribute();

    private static final String ZZ_ATTRIBUTE_PACKED_0 =
            "\1\0\1\11\2\1\1\11\3\1\2\11\3\1\2\11" +
                    "\1\1\3\11\1\1\6\11\26\1\1\11\1\0\1\11" +
                    "\1\1\4\0\1\11\1\0\1\11\1\1\1\0\2\1" +
                    "\1\0\1\11\34\1\1\0\2\11\1\0\35\1\1\11" +
                    "\1\0\33\1\1\0\234\1";

    private static int[] zzUnpackAttribute ()
    {
        int[] result = new int[312];
        int offset = 0;
        offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
        return result;
    }

    private static int zzUnpackAttribute (String packed, int offset, int[] result)
    {
        int i = 0;       /* index in packed string  */
        int j = offset;  /* index in unpacked array */
        int l = packed.length();
        while (i < l) {
            int count = packed.charAt(i++);
            int value = packed.charAt(i++);
            do result[j++] = value; while (--count > 0);
        }
        return j;
    }

    /**
     * the current state of the DFA
     */
    private int zzState;

    /**
     * the current lexical state
     */
    private int zzLexicalState = YYINITIAL;

    /**
     * this buffer contains the current text to be matched and is
     * the source of the yytext() string
     */
    private CharSequence zzBuffer = "";

    /**
     * this buffer may contains the current text array to be matched when it is cheap to
     * acquire it
     */
    private char[] zzBufferArray;

    /**
     * the textposition at the last accepting state
     */
    private int zzMarkedPos;

    /**
     * the textposition at the last state to be included in yytext
     */
    private int zzPushbackPos;

    /**
     * the current text position in the buffer
     */
    private int zzCurrentPos;

    /**
     * startRead marks the beginning of the yytext() string in the buffer
     */
    private int zzStartRead;

    /**
     * endRead marks the last character in the buffer, that has been read
     * from input
     */
    private int zzEndRead;

    /**
     * zzAtBOL == true <=> the scanner is currently at the beginning of a line
     */
    private boolean zzAtBOL = true;

    /**
     * zzAtEOF == true <=> the scanner is at the EOF
     */
    private boolean zzAtEOF;

    /**
     * denotes if the user-EOF-code has already been executed
     */
    private boolean zzEOFDone;

    /* user code: */
    public _OSSLexer ()
    {
        this((java.io.Reader)null);
    }


    public _OSSLexer (java.io.Reader in)
    {
        this.zzReader = in;
    }

    /**
     * Creates a new scanner.
     * There is also java.io.Reader version of this constructor.
     *
     * @param in the java.io.Inputstream to read input from.
     */
    public _OSSLexer (java.io.InputStream in)
    {
        this(new java.io.InputStreamReader(in));
    }

    /**
     * Unpacks the compressed character translation table.
     *
     * @param packed the packed character translation table
     * @return the unpacked character translation table
     */
    private static char[] zzUnpackCMap (String packed)
    {
        char[] map = new char[0x10000];
        int i = 0;  /* index in packed string  */
        int j = 0;  /* index in unpacked array */
        while (i < 186) {
            int count = packed.charAt(i++);
            char value = packed.charAt(i++);
            do map[j++] = value; while (--count > 0);
        }
        return map;
    }

    public final int getTokenStart ()
    {
        return zzStartRead;
    }

    public final int getTokenEnd ()
    {
        return getTokenStart() + yylength();
    }

    public void reset (CharSequence buffer, int start, int end, int initialState)
    {
        zzBuffer = buffer;
        zzBufferArray = com.intellij.util.text.CharArrayUtil.fromSequenceWithoutCopying
                (buffer);
        zzCurrentPos = zzMarkedPos = zzStartRead = start;
        zzPushbackPos = 0;
        zzAtEOF = false;
        zzAtBOL = true;
        zzEndRead = end;
        yybegin(initialState);
    }

    /**
     * Refills the input buffer.
     *
     * @return <code>false</code>, iff there was new input.
     * @throws java.io.IOException if any I/O-Error occurs
     */
    private boolean zzRefill () throws java.io.IOException
    {
        return true;
    }


    /**
     * Returns the current lexical state.
     */
    public final int yystate ()
    {
        return zzLexicalState;
    }


    /**
     * Enters a new lexical state
     *
     * @param newState the new lexical state
     */
    public final void yybegin (int newState)
    {
        zzLexicalState = newState;
    }


    /**
     * Returns the text matched by the current regular expression.
     */
    public final CharSequence yytext ()
    {
        return zzBuffer.subSequence(zzStartRead, zzMarkedPos);
    }


    /**
     * Returns the character at position <tt>pos</tt> from the
     * matched text.
     * <p/>
     * It is equivalent to yytext().charAt(pos), but faster
     *
     * @param pos the position of the character to fetch.
     *            A value from 0 to yylength()-1.
     * @return the character at position pos
     */
    public final char yycharat (int pos)
    {
        return zzBufferArray != null ? zzBufferArray[zzStartRead + pos]: zzBuffer.charAt(zzStartRead + pos);
    }


    /**
     * Returns the length of the matched text region.
     */
    public final int yylength ()
    {
        return zzMarkedPos - zzStartRead;
    }


    /**
     * Reports an error that occured while scanning.
     * <p/>
     * In a wellformed scanner (no or only correct usage of
     * yypushback(int) and a match-all fallback rule) this method
     * will only be called with things that "Can't Possibly Happen".
     * If this method is called, something is seriously wrong
     * (e.g. a JFlex bug producing a faulty scanner etc.).
     * <p/>
     * Usual syntax/scanner level error handling should be done
     * in error fallback rules.
     *
     * @param errorCode the code of the errormessage to display
     */
    private void zzScanError (int errorCode)
    {
        String message;
        try {
            message = ZZ_ERROR_MSG[errorCode];
        }
        catch (ArrayIndexOutOfBoundsException e) {
            message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR];
        }

        throw new Error(message);
    }


    /**
     * Pushes the specified amount of characters back into the input stream.
     * <p/>
     * They will be read again by then next call of the scanning method
     *
     * @param number the number of characters to be read again.
     *               This number must not be greater than yylength()!
     */
    public void yypushback (int number)
    {
        if (number > yylength()) {
            zzScanError(ZZ_PUSHBACK_2BIG);
        }

        zzMarkedPos -= number;
    }


    /**
     * Contains user EOF-code, which will be executed exactly once,
     * when the end of file is reached
     */
    private void zzDoEOF ()
    {
        if (!zzEOFDone) {
            zzEOFDone = true;

        }
    }


    /**
     * Resumes scanning until the next regular expression is matched,
     * the end of input is encountered or an I/O-Error occurs.
     *
     * @return the next token
     * @throws java.io.IOException if any I/O-Error occurs
     */
    public IElementType advance () throws java.io.IOException
    {
        int zzInput;
        int zzAction;

        // cached fields:
        int zzCurrentPosL;
        int zzMarkedPosL;
        int zzEndReadL = zzEndRead;
        CharSequence zzBufferL = zzBuffer;
        char[] zzBufferArrayL = zzBufferArray;
        char[] zzCMapL = ZZ_CMAP;

        int[] zzTransL = ZZ_TRANS;
        int[] zzRowMapL = ZZ_ROWMAP;
        int[] zzAttrL = ZZ_ATTRIBUTE;

        while (true) {
            zzMarkedPosL = zzMarkedPos;

            zzAction = -1;

            zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL;

            zzState = ZZ_LEXSTATE[zzLexicalState];


            zzForAction:
            {
                while (true) {

                    if (zzCurrentPosL < zzEndReadL) {
                        zzInput = zzBufferL.charAt(zzCurrentPosL++);
                    }
                    else if (zzAtEOF) {
                        zzInput = YYEOF;
                        break zzForAction;
                    }
                    else {
                        // store back cached positions
                        zzCurrentPos = zzCurrentPosL;
                        zzMarkedPos = zzMarkedPosL;
                        boolean eof = zzRefill();
                        // get translated positions and possibly new buffer
                        zzCurrentPosL = zzCurrentPos;
                        zzMarkedPosL = zzMarkedPos;
                        zzBufferL = zzBuffer;
                        zzEndReadL = zzEndRead;
                        if (eof) {
                            zzInput = YYEOF;
                            break zzForAction;
                        }
                        else {
                            zzInput = zzBufferL.charAt(zzCurrentPosL++);
                        }
                    }
                    int zzNext = zzTransL[zzRowMapL[zzState] + zzCMapL[zzInput]];
                    if (zzNext == -1) {
                        break zzForAction;
                    }
                    zzState = zzNext;

                    int zzAttributes = zzAttrL[zzState];
                    if ((zzAttributes & 1) == 1) {
                        zzAction = zzState;
                        zzMarkedPosL = zzCurrentPosL;
                        if ((zzAttributes & 8) == 8) {
                            break zzForAction;
                        }
                    }

                }
            }

            // store back cached position
            zzMarkedPos = zzMarkedPosL;

            switch (zzAction < 0 ? zzAction: ZZ_ACTION[zzAction]) {
                case 3: {
                    return STAR;
                }
                case 63:
                    break;
                case 54: {
                    return KW_MODULE_TRAIT;
                }
                case 64:
                    break;
                case 9: {
                    return LEFT_BRACKET;
                }
                case 65:
                    break;
                case 49: {
                    return KW_OPERATION;
                }
                case 66:
                    break;
                case 34: {
                    return KW_TRAIT;
                }
                case 67:
                    break;
                case 32: {
                    return KW_LABEL;
                }
                case 68:
                    break;
                case 31: {
                    return KW_CLASS;
                }
                case 69:
                    break;
                case 48: {
                    return KW_COMPONENT;
                }
                case 70:
                    break;
                case 44: {
                    return KW_VISIBLE;
                }
                case 71:
                    break;
                case 62: {
                    return KW_TEXTSEARCHSUPPORTED;
                }
                case 72:
                    break;
                case 55: {
                    return KW_USETEXTINDEX;
                }
                case 73:
                    break;
                case 29: {
                    return EXPR_LITERAL;
                }
                case 74:
                    break;
                case 38: {
                    return KW_LAYOUT;
                }
                case 75:
                    break;
                case 14: {
                    return OP_EQ;
                }
                case 76:
                    break;
                case 8: {
                    return DOT;
                }
                case 77:
                    break;
                case 15: {
                    return AT;
                }
                case 78:
                    break;
                case 57: {
                    return KW_PORTLETWRAPPER;
                }
                case 79:
                    break;
                case 36: {
                    return KW_ZNONE;
                }
                case 80:
                    break;
                case 16: {
                    return HASH;
                }
                case 81:
                    break;
                case 12: {
                    return SEMI;
                }
                case 82:
                    break;
                case 26: {
                    return STRING_LITERAL;
                }
                case 83:
                    break;
                case 24: {
                    return FLT_LITERAL;
                }
                case 84:
                    break;
                case 18: {
                    return RIGHT_PARENTH;
                }
                case 85:
                    break;
                case 13: {
                    return COLON;
                }
                case 86:
                    break;
                case 46: {
                    return KW_HOMEPAGE;
                }
                case 87:
                    break;
                case 22: {
                    return BLOCK_COMMENT;
                }
                case 88:
                    break;
                case 11: {
                    return COMA;
                }
                case 89:
                    break;
                case 33: {
                    return KW_AFTER;
                }
                case 90:
                    break;
                case 23: {
                    return KEY_PATH;
                }
                case 91:
                    break;
                case 6: {
                    return LEFT_BRACE;
                }
                case 92:
                    break;
                case 52: {
                    return KW_DISPLAYGROUP;
                }
                case 93:
                    break;
                case 21: {
                    return LINE_COMMENT;
                }
                case 94:
                    break;
                case 47: {
                    return KW_BINDINGS;
                }
                case 95:
                    break;
                case 20: {
                    return EXCL_MARK;
                }
                case 96:
                    break;
                case 45: {
                    return KW_PAGENAME;
                }
                case 97:
                    break;
                case 53: {
                    return KW_PAGEBINDINGS;
                }
                case 98:
                    break;
                case 25: {
                    return DYN_FIELDPATHBINDING;
                }
                case 99:
                    break;
                case 51: {
                    return KW_DISPLAYKEY;
                }
                case 100:
                    break;
                case 30: {
                    return LOCALIZATION_KEY;
                }
                case 101:
                    break;
                case 42: {
                    return KW_MODULE;
                }
                case 102:
                    break;
                case 50: {
                    return KW_NEEDSFORM;
                }
                case 103:
                    break;
                case 19: {
                    return NEGATE;
                }
                case 104:
                    break;
                case 10: {
                    return RIGHT_BRACKET;
                }
                case 105:
                    break;
                case 17: {
                    return LEFT_PARENTH;
                }
                case 106:
                    break;
                case 43: {
                    return KW_ZRIGHT;
                }
                case 107:
                    break;
                case 2: {
                    return com.intellij.psi.TokenType.WHITE_SPACE;
                }
                case 108:
                    break;
                case 60: {
                    return KW_WRAPPERBINDINGS;
                }
                case 109:
                    break;
                case 41: {
                    return KW_BEFORE;
                }
                case 110:
                    break;
                case 27: {
                    return SQ_STRING_LITERAL;
                }
                case 111:
                    break;
                case 37: {
                    return KW_ZLEFT;
                }
                case 112:
                    break;
                case 4: {
                    return IDENTIFIER;
                }
                case 113:
                    break;
                case 58: {
                    return KW_SEARCHOPERATION;
                }
                case 114:
                    break;
                case 56: {
                    return KW_ACTIONRESULTS;
                }
                case 115:
                    break;
                case 5: {
                    return INT_LITERAL;
                }
                case 116:
                    break;
                case 39: {
                    return KW_ACTION;
                }
                case 117:
                    break;
                case 35: {
                    return KW_FIELD;
                }
                case 118:
                    break;
                case 28: {
                    return NEXT;
                }
                case 119:
                    break;
                case 61: {
                    return KW_WRAPPERCOMPONENT;
                }
                case 120:
                    break;
                case 59: {
                    return KW_VALUEREDIRECTOR;
                }
                case 121:
                    break;
                case 40: {
                    return KW_OBJECT;
                }
                case 122:
                    break;
                case 7: {
                    return RIGHT_BRACE;
                }
                case 123:
                    break;
                case 1: {
                    return com.intellij.psi.TokenType.BAD_CHARACTER;
                }
                case 124:
                    break;
                default:
                    if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
                        zzAtEOF = true;
                        zzDoEOF();
                        return null;
                    }
                    else {
                        zzScanError(ZZ_NO_MATCH);
                    }
            }
        }
    }


}
